home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / game / role / DSA_Utils.lha / DSA-Utils / DSA_Leute.p (.txt) < prev    next >
LaTeX Document  |  1997-09-21  |  4KB  |  111 lines

  1. ex: set ts=2 ai
  2. program Leute;    { Generiert Liste von Leuten, zum Kampf }
  3. {$I "include:utils/stringlib.i"}
  4. {$I "include:utils/random.i"}
  5. {$I-}
  6. type t_Liste=record
  7.             Name:string;
  8.             next:^t_Liste
  9.         end;
  10. var aus:text;
  11.         c:char;
  12.         Liste:t_Liste;
  13. function str_int(str:string):integer;
  14. var i,j:integer;
  15.         l,n:short;
  16. begin
  17.     i:=0; l:=pred(strlen(str));
  18.     for j:=0 to l do begin
  19.         n:=ord(str[j])-48;
  20.         if (n<0) or (n>9) then str_int:=i;
  21.         i:=i*10+n
  22.     end;
  23.     str_int:=i
  24. function int_str(i:integer):string;    { i=0..99 }
  25. var str:string;
  26. begin str:=AllocString(4);
  27.     if i<10 then begin
  28.         str[0]:=chr(i+48); str[1]:='\0'
  29.     end else begin
  30.         str[0]:=chr(i div 10+48); str[1]:=chr(i mod 10+48); str[2]:='\0'
  31.     end;
  32.     int_str:=str
  33. function min(a,b:integer):integer;
  34. begin if a<b then min:=a else min:=b end;
  35. function max(a,b:integer):integer;
  36. begin if a<b then max:=b else max:=a end;
  37. procedure HandEingabe;
  38. var waffe,name,str:string;
  39.         c,at,pa,rs,le,tp:integer;
  40. begin
  41.     c:=1; name:=AllocString(50); str:=AllocString(50); waffe:=AllocString(50);
  42.     write("\nEnde mit Name=*\n");
  43.     if open("RAM:Gegner.tex",aus,1024) then begin
  44.         write(aus,"\\begin{tabular}{lr@{/}lllll}\n\\bf Name & \\bf AT&\\bf PA & \\bf RS & \\bf Waffe & \\bf TP & \\bf LE\\\\\n");
  45.         repeat
  46.             write('\n',c,":\n Name:  "); readln(name); inc(c);
  47.             if not streq(name,"*") then begin
  48.                 write(" AT:    "); readln(str); at:=str_int(str);
  49.                 write(" PA:    "); readln(str); pa:=str_int(str);
  50.                 write(" RS:    "); readln(str); rs:=str_int(str);
  51.                 write(" Waffe: "); readln(waffe); 
  52.                 write(" TP: W6+"); readln(str); tp:=str_int(str);
  53.                 write(" LE:    "); readln(str); le:=str_int(str);
  54.                 write(aus,' ',name," &",at:3," &",pa:3," &",rs:3," & ",waffe," & W$_6$+",tp," & ",le," \\rule[-2pt]{70mm}{.5pt} \\\\[3mm]\n")
  55.             end
  56.         until streq(name,"*");
  57.         write(aus,"\\end{tabular}\n"); close(aus);
  58.         write("\nDatei `RAM:Gegner.tex' fertig.\n\n")
  59.     end else write("\nKonnte `RAM:Gegner.tex' nicht 
  60. ffnen!\n\n");
  61. procedure AutoGen;
  62. var waffe,name,str:string;
  63.         anz,i,q,w,c,brs,rsp,atp,pap,lep,bat,bpa,ble:integer;
  64.         waff,treff:array[0..4]of string;
  65. begin
  66.     str:=AllocString(60);
  67.     write("\nBis zu 5 verschiedene Waffen eingeben (Default=Schwert/W6+4, *=Ende):\n"); i:=0;
  68.     repeat
  69.         write(succ(i),". Waffe: "); readln(str);
  70.         if not streq(str,"*") then begin
  71.             waff[i]:=strdup(str);
  72.             write("    '",str,"' hat TP=  W6+\b\b\b\b\b"); readln(str); q:=max(1,str_int(str));
  73.             write("\eM    '",waff[i],"' hat TP=",q:2,"W6+"); readln(str); w:=str_int(str);
  74.             strcpy(str," W$_6$+"); str[0]:=chr(q+48); strcat(str,int_str(w));
  75.             treff[i]:=strdup(str); inc(i);
  76.         end
  77.     until streq(str,"*") or (i=5);
  78.     if i=0 then begin waff[0]:="Schwert"; treff[0]:="W$_6$+4"; anz:=0 end
  79.     else anz:=pred(i);
  80.     write("\nAT der Gegner von:    bis:\b\b\b\b\b\b\b"); readln(str);
  81.     bat:=str_int(str);
  82.     write("\eMAT der Gegner von: ",bat," bis: \b "); readln(str);
  83.     atp:=max(str_int(str),succ(bat))-bat;
  84.     write("\nPA der Gegner von:    bis:\b\b\b\b\b\b\b"); readln(str);
  85.     bpa:=str_int(str);
  86.     write("\eMPA der Gegner von: ",bpa," bis: \b "); readln(str);
  87.     pap:=max(str_int(str),succ(bpa))-bpa;
  88.     write("\nRS der Gegner von:   bis:\b\b\b\b\b\b"); readln(str);
  89.     brs:=str_int(str);
  90.     write("\eMRS der Gegner von: ",brs," bis: "); readln(str);
  91.     rsp:=max(str_int(str),brs)-brs;
  92.     write("\nLE der Gegner von:    bis:\b\b\b\b\b\b\b"); readln(str);
  93.     ble:=str_int(str);
  94.     write("\eMLE der Gegner von: ",ble," bis: \b "); readln(str);
  95.     lep:=max(str_int(str),ble+5)-ble;
  96.     write("\nAnzahl der Gegner: "); readln(str); c:=str_int(str);
  97.     if open("RAM:Gegner.tex",aus,1024) then begin
  98.         write(aus,"\\begin{tabular}{r@{.~}r@{/}lllll}\n\\bf Name & \\bf AT&\\bf PA & \\bf RS & \\bf Waffe & \\bf TP & \\bf LE\\\\\n");
  99.         for i:=1 to c do begin
  100.             q:=rangerandom(atp); w:=min(bat+q,bpa+rangerandom(pap)); { immer PA < AT }
  101.             write(aus,i:3," &",bat+q:3," &",w:3," &",brs+rangerandom(rsp):2," & ",waff[rangerandom(anz)]," & ",treff[rangerandom(anz)]," &",ble+rangerandom(lep):3," \\rule[-2pt]{70mm}{.5pt} \\\\[3mm]\n")
  102.         end;
  103.         write(aus,"\\end{tabular}\n"); close(aus);
  104.         write("\nDatei `RAM:Gegner.tex' fertig.\n\n")
  105.     end else write("\nKonnte `RAM:Gegner.tex' nicht 
  106. ffnen!\n\n");
  107. begin
  108.     write("\f\n    \e[1mGegnerliste\e[0m\n\n\e[33mH\e[31mandeingabe oder \e[33mA\e[31mutogenerierung? ");
  109.     readln(c);
  110.     if tolower(c)='h' then HandEingabe else AutoGen;
  111.